
<%@page import="tmanager.*"%>
<%@ include file="/WEB-INF/sql.jsp" %>
<%  //Recupero l'indirizzo email dal form
    boolean emailInviata = false;
    String email = (request.getParameter("email") == null) ? "" : request.getParameter("email").trim();
    //Se l'indirizzo email non è vuoto
    if (!email.equals("")) {
        //Genero una password casuale
        String passwordGenerata = Utility.passGen();
        try {
            Connection c = DriverManager.getConnection(stringaConnessione, utenteSQL, passwordSQL);
            PreparedStatement ps = c.prepareStatement(emailStudente);
            ps.setString(1, email);

            ResultSet r = ps.executeQuery();
            //Se è presente in database uno studente con quella email
            if (r.next()) {//aggiorno con la nuova email casuale
                Studente s = new Studente();
                s.setMatricola(r.getInt(1));
                s.setNome(r.getString(2));
                s.setCognome(r.getString(3));
                s.setEmail(r.getString(4));
                s.setPassword(r.getString(5));
                s.setRelatore(r.getInt(6));
                s.setStatoProgettoTesi(r.getString(7));
                s.setTitoloTesi(r.getString(8));
                s.setCorsoTesi(r.getString(9));
                s.setTipologiaTesi(r.getString(10));
                s.setTipoLaurea(r.getString(11));

                s.setPassword(Utility.getMD5(passwordGenerata));

                ps = c.prepareStatement(updateMailPassStudente);
                ps.setString(1, s.getEmail());
                ps.setString(2, s.getPassword());
                ps.setInt(3, s.getMatricola());
                ps.executeUpdate();
            } else {
                //Se invece è presente un professore con quella email
                //aggiorno con la nuova email casuale
                ps = c.prepareStatement(emailProfessore);
                ps.setString(1, email);
                r = ps.executeQuery();
                if (r.next()) {
                    Professore p = new Professore();
                    p.setIdentificativo(r.getInt(1));
                    p.setNome(r.getString(2));
                    p.setCognome(r.getString(3));
                    p.setEmail(r.getString(4));
                    p.setPassword(r.getString(5));

                    p.setPassword(Utility.getMD5(passwordGenerata));

                    ps = c.prepareStatement(updateMailPassProfessore);
                    ps.setString(1, p.getEmail());
                    ps.setString(2, p.getPassword());
                    ps.setInt(3, p.getIdentificativo());
                    ps.executeUpdate();
                } else {//Altrimenti non è presente un profilo corrispondete alla email inserita
                    session.setAttribute("tmanager.erroreTitolo", "Errore durante la procedura di recupero password");
                    session.setAttribute("tmanager.erroreMessaggio", "Siamo spiacenti, ma non è stato possibile, con i dati inseriti, trovare il profilo corretto. Provare ad effettuare l'operazione nuovamente.");
                    response.sendRedirect("errore.jsp");
                    return;
                }
            }
            r.close();
            ps.close();
            c.close();
            //Invio una mail di conferma con la nuova password casuale
            EMailManager em = new EMailManager();
            emailInviata = em.inviaEMail(email, "Sistema T-Manager: modifica password login al sistema", "Buongiorno, \n"
                    + "sembra tu abbia richiesto l\'operazione di recupero password: \n"
                    + "La nuova password e\': " + passwordGenerata + " (password generata automaticamente)" + "\n"
                    + "\n" + "\n"
                    + "Cordiali saluti\n");
            if (!emailInviata) {//In caso di mancato invio segnalo l'errore
                session.setAttribute("tmanager.erroreTitolo", "Errore durante la procedura di recupero password");
                session.setAttribute("tmanager.erroreMessaggio", "Siamo spiacenti, si è verificato un errore durante l'invio della mail contenente la nuova password. Provare ad effettuare l'operazione nuovamente.");
                response.sendRedirect("errore.jsp");
                return;
            }

        } catch (SQLException e) {
            session.setAttribute("tmanager.erroreTitolo", "Errore durante la procedura di recupero password");
            session.setAttribute("tmanager.erroreMessaggio", "Siamo spiacenti, si è verificato un errore durante l'aggiornamento della nuova password sul database. Provare ad effettuare l'operazione nuovamente.");
            response.sendRedirect("errore.jsp");
            return;
        }
    }
%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Recupero password</title>
        <link rel="stylesheet" type="text/css" href="CSS/defaultStyle.css" />
    </head>
    <body>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type="text/javascript" src="Scripts/scripts.js"></script>
          <script type="text/javascript">
            function inizializza(){
                
                $("#email").bind("blur",{p:"email"}, verificaEMail);
                
                $("#recuperaPassword").bind("click",{p:"recuperoPwd"}, invia);
                $("#cancella").bind("click",pulisci);
            };
            $(document).ready(inizializza);
        </script>
        <div id="header">
            <h1>Sistema di gestione dei Tesisti</h1>
            <hr />
        </div>
        <div id="corpo">
            <div id="corpoSx">
            <% if (emailInviata) {%>
            <h2><img id="ok" src="Immagini/Actions-dialog-ok-apply-icon50px.png"/>Password modificata.</h2>
            <h4>La nuova password &egrave; stata inviata al tuo indirizzo mail.</h4>
            <% } else {%>
            <h2>Recupero password</h2>
            <p>Inserisci la tua email. Provvederemo al reset della tua password.</p>
            <div class="modificaProfilo">
            <form id="recuperoPwd" method="post" action="recuperoPassword.jsp">
                <fieldset>
                <b>Indirizzo email:</b>
                <input type="text" id="email" name="email"/>
                <input type="submit" id="recuperaPassword" name="recuperaPassword" value="procedi>>"/>
                <input type="reset" value="Cancella" id="cancella"/>
                </fieldset>
            </form>
            </div>
            <% }%>
            </div>
            <hr />
            <div id="corpoDx">
            <a href="index.jsp"><img src="Immagini/Home-icon30.png"/>Home Page</a>
            </div>
        </div>
            <%@include file="/WEB-INF/jspf/footer.jspf" %>
    </body>
</html>
